
$(function(){
	
	//保存修改的质控项数据
	var saveModifyData = function(obj){
	    $.post(contextPath+"/dictDetailTable/modify.dhc",
	    		{"detailCode":obj.code,"fieldCode":obj.field,"value":obj.value}   
	    ).done(function(result){
	    	if(result){
		    	var myTable = obj.table;
		        var newData = myTable.row(obj.rowIndex).data();//取得DataTable的行数据
		        newData[obj.field] = obj.value; //修改该行的某个列的数据
		        myTable.row(obj.rowIndex).data(newData).draw();//重绘这一行	 
	    	}else{
	    		drgUI.error("保存失败");
	    	}
	    });
	}
	//保存修改的校验规则数据
	var saveModifyRulesData = function(obj){
	    $.post(contextPath+"/dictDetailTable/updateRules.dhc",
	    		{"ruleCode":obj.code,"field":obj.field,"value":obj.value}   
	    ).done(function(result){
	    	if(result){
		    	var myTable = obj.table;
		        var newData = myTable.row(obj.rowIndex).data();//取得DataTable的行数据
		        newData[obj.colName] = obj.value; //修改该行的某个列的数据
		        myTable.row(obj.rowIndex).data(newData).draw();//重绘这一行
		        modifyRulesTable(obj.dialog);	    		
	    	}else{
	    		drgUI.error("保存失败");
	    	}
	    });
	}
	//
	var modifyRulesTable = function(dialog){
		//将dataTable的宽度缩小1个单位，否则表格最右边的边框显示不出来
		var oldWidth = $(dialog).find("#detailRulesTable").css("width");
		$(dialog).find("#detailRulesTable").css("width",parseInt(oldWidth)-1);
	}
	//
	var findRules = function(param){
		var rulesTable ;
		if(!param.detailCode){
			return false;
		}
        //ajax加载动画 '0':去掉 ， '1':添加
		drgUI.bindAjaxStart('0');//去掉ajax加载动画
		$.post(contextPath+"/pages/common/top-dialog-buttons.jsp").done(function(data){
			var dialog  = $(data);
			dialog.find(".modal-title").html(param.detailName);
			dialog.find(".modal-dialog").css('width','620');
			//加载动画
			dialog.find("#echartcq4 img").css('width','580').css('height','380');
			dialog.find(".modal-body").css('width','600');
			dialog.modal({               // modal():调用模式窗口
				keyboard : true      //当按下 escape 键时关闭模态框，设置为 false 时则按键无效
			}).on({
				//当模态框完全对用户隐藏时触发。
				"hidden.bs.modal" : function() {
					dialog.remove();
				},
				//当模态框对用户可见时触发（将等待 CSS 过渡效果完成）
	            "shown.bs.modal" : function(){
	    		    $.post(contextPath+"/dictDetailTable/findRules.dhc",{"detailCode":param.detailCode}).done(function(result){
	    				var str = '';
	    				str+=' <div class="row-fluid clearfix">  ';
	    				str+=' 		<div class="col-sm-12">  ';
	    				str+='			<div style="width:99%;"><table id="detailRulesTable" width="100%" class="cell-border"></table></div>';
	    				str+=' 		</div>';
	    				str+=' </div>';
	    				dialog.find(".modal-body").html(str);
	    		    	var rulesData = result.data ? result.data:[];
	    		    	
	    		    	var allData = [];
	    	            $.each(rulesData, function(i, val) {
	    	            	var obj = {'id':val.ruleCode,'value':val.validFlag};
	    	            	allData.push(obj);
	    	            });
	    		    	//表格信息 	
	    				var paramsTables={
	    					searching: false, //此选项用来开启、关闭Datatables的搜索功能
	    					lengthChange: false, //是否允许最终用户改变表格每页显示的记录数
	    					paging: false,  //是否开启本地分页
	    					info:false,     //控制是否显示表格左下角的信息
	    					ordering:false, //是否允许Datatables开启排序
//	    					autoWidth:true, //控制Datatables是否自适应宽度
	    					scrollX:false,
	    					scrollY: false //当表格高度超过300px的时候，显示垂直滚动条
	    				};
	    				var columns=[
	    		               {
	    		            	   "title":"项目类别",
	    		            	   "data":"weightCode"
	    		               },
	    		               {
	    		            	   "title":"校验规则名称",
	    		            	   "data":"ruleName"
	    		               },
	    		               {
	    		            	   "title":"校验规则说明",
	    		            	   "data":"ruleIntroduction",
	    		            	   "render":function(tdData, type, rowData, meta ){
	    		            		   //如果数据太长会把后面的列标题挤掉,这里限制每行的长度
	    		            		  return linefeedText(tdData,30);
	    		            	   }
	    		               },
	    		               {
	    		            	   "title":"是否校验",
	    		            	   "data":"validFlag",
	    			   			   "render":function ( tdData, type, rowData, meta ) {
	    						    	//tdData:当前cell的值（基于 columns.data）      rowData:整个row的数据（不基于 columns.data）
	    						    	//meta.row 行下标从0开始，meta.col 列下标从0开始
	    						    	//如果是过滤或者排序则返回原始数据
	    						    	if(type =='filter'||type =='sort'){
	    						    		return tdData;
	    						    	}
	    						    	var tdDiv = '<div class="datagrid-cell" rowIndex="'+meta.row+'@@'+meta.col+'" tdValue="'+tdData+'"><input type="radio" ';
	    						    	if( parseInt(tdData) == 1 ){
	    						    		tdDiv +=' checked="checked" ';
	    						    	}
	    						    	tdDiv += ' value="1" name="detailRulesTable_'+meta.row;
	    						    	tdDiv += '">是<input type="radio" ';
	    						    	if( parseInt(tdData) == 0 ){
	    						    		tdDiv +=' checked="checked" ';
	    						    	}
	    						    	tdDiv +=' value="0" name="detailRulesTable_'+meta.row;
	    						    	tdDiv +='">否</div>';
	    						    	return tdDiv;
	    						    }
	    		               },
	    		               {
	    		            	   "title":"保存",
	    		            	   "data":"ruleCode",
	    			   			   "render": function ( tdData, type, rowData, meta ) {
	    			   				//tdData:当前cell的值（基于 columns.data）      rowData:整个row的数据（不基于 columns.data）
	    			   				//meta.row 行下标从0开始，meta.col 列下标从0开始
	    						    	var tdOperate = '<button class="btn btn-xs" colIndex="'+meta.row+"@@"+meta.col+"@@"+tdData+"@@"+rowData.detailCode+'" disabled="true" >';
	    						    	tdOperate += '<i class="fa fa-check "></i></button>';
	    						    	return tdOperate;
	    						    }
	    		               }
	    			     ];
	    				//将导出按钮的全局变量值保存起来
	    				var exportEnable_rules = window.exportEnable;
	    				//将全局公共button变量值保存起来
	    				var buttonsCommon_rules = window.buttonsCommon;
	    				//设置导出按钮为false
	    				window.exportEnable=false;
	    				//如果没有导出权限，则将定义的公共button清空
	    				window.buttonsCommon=[];
	    				rulesTable = dialog.find("#detailRulesTable").dataTableBasic(columns, rulesData,paramsTables);
	    				//将dataTable的宽度缩小1个单位，否则表格最右边的边框显示不出来
	    				modifyRulesTable(dialog);
	    				//恢复导出按钮的全局变量值
	    				window.exportEnable= exportEnable_rules;
	    				//恢复全局公共button变量值
	    				window.buttonsCommon= buttonsCommon_rules;
	    				//给单选按钮列   是，否   添加点击监听事件
	    				dialog.find("#detailRulesTable tbody").on( 'click', 'input[type="radio"]', function () {
	    		        	var radioValue = $(this).val(); //被点击的input的value值
	    		        	var oldValue = $(this).parent().attr("tdValue");//默认值
	    		        	var rowIndex = $(this).parent().attr("rowIndex");//被点击元素所在的行坐标和列坐标值
	    		        	var rowInfos = rowIndex.split("@@");
	    		        	//获取下一列的内容 （标题也算一行，所以行下标要加1）
	    		        	var myNextColumn = $(this).parents("#detailRulesTable").find("tr").eq(parseInt(rowInfos[0])+1).find("td").eq(parseInt(rowInfos[1])+1);
	    		        	if( radioValue == oldValue ){//如果是默认值，则移除下一列的绿色样式并设为不可用
	    		        		$(myNextColumn).children("button").removeClass("btn-success").attr("disabled",true) ;
	    		        	}else{//如果不是默认值，则给下一列添加绿色样式并设为可用
	    		        		$(myNextColumn).children("button").addClass("btn-success").removeAttr("disabled");
	    		        	}
	    		        } );
	    				
	    				 var detailValue = '0';
	    				 var detailCode ;
	    		        //给保存按钮列添加点击监听事件
	    				dialog.find("#detailRulesTable tbody").on( 'click', 'button.btn', function () {
	    		        	var colIndex = $(this).attr("colIndex");//被点击元素所在的行坐标和列坐标值
	    		        	var indexInfos = colIndex.split("@@");
	    		            //获取前一列的值（从0列开始计数，标题也算一行，所以行下标要加1）
	    		            var divObj = $(this).parents("#detailRulesTable").find("tr").eq(parseInt(indexInfos[0])+1).find("td").eq(parseInt(indexInfos[1])-1);
	    		        	//input:checked 获取被选中的input值             input[checked="checked"]这个写法只能取到初始值，取不到动态修改以后的值
	    		            var newValue = $(divObj).find('input:checked').val();
	    		           
	    		            detailCode = indexInfos[3];

	    		            var paramRule = {code:indexInfos[2],field:"VALID_FLAG",value:newValue,colName:"validFlag",
	    		            		table:rulesTable,rowIndex:parseInt(indexInfos[0]),dialog:dialog};
	    		            saveModifyRulesData(paramRule);
	    		        } );
	    				//给确定按钮添加监听事件
	    				dialog.find('#save').on('click', function(){
	    					dialog.modal('hide');
	    				});
	    				//如果上一级状态是 否，则这一级详细页面状态为不能操作
	    				if(param.detailvalue == '0'){
	    					dialog.find(":radio,button.btn").attr("disabled",true);
	    					dialog.find("button.btn-default").attr("disabled",false);
	    				}
	    		    });	//$.post().done(function(){
	
	            }//"shown.bs.modal" : function(){
			});//end on
		});//$.post()
	}//end findRules function(){
	
	//初始化页面
	var initPage = function(tableId){
//		var hospCode = paramTabPage[tabId].hospCode;
	    $.post(contextPath+"/dictDetailTable/getAllMrqDictScore.dhc",{}   
	    ).done(function(result){
	    	var tableData = result.data ? result.data: null;
	    	if(tableData && tableData.length > 0 ){
	    		var divHtml = '';
	    		var len=tableData.length;
	    		for(var i=0;i<len;i++){
	    			var rowDatai = tableData[i];
	    			if(i%2 == 0){
	    				if(i == 0){
	    					divHtml +='<div class="row-fluid clearfix">';
	    				}else{
	    					divHtml +='</div><div class="row-fluid clearfix">';
	    				}	    				
	    			}
	    			divHtml +='<div class="col-md-6 column padding10">';
	    			divHtml +='		<div class="infocq ">';
	    			divHtml +='			<div class="tii blue-bg"></div>';
	    			divHtml +='			<div class="row-fluid clearfix  top-card">';
	    			divHtml +='				<table id="'+rowDatai.SCORE_CODE+'Table" class="cell-border"></table>';
	    			divHtml +='			</div>';
	    			divHtml +='		</div>';
	    			divHtml +='</div>';
	    			if(i == len-1){
    					divHtml +='</div>';
    				}
	    		}
	    		
	    		$("#"+tabId+" #"+tableId).append(divHtml);
	    		
	    		var tds = '';
	    		//tableData=[{SCORE_CODE: "BASICINFO", SCORE_NAME: "患者基本信息", SCORE_SCORE: 18},{SCORE_CODE: "IP", SCORE_NAME: "住院过程信息", SCORE_SCORE: 26}]
	    		for(var sc in tableData){
	    			tds += tableData[sc].SCORE_CODE+'@@';
	    		}	    			
	    	    $.post(contextPath+"/dictDetailTable/tableInfoJson.dhc",
	    	    		{"scoreCode":tds}   
	    	    ).done(function(result){
	    	    	
	    	    	var dataJson = result.data ? result.data: null;
	    	    	for(var td in tableData){
	    	    		var sc = tableData[td].SCORE_CODE;
	    	    		initTables(sc+'Table',tableData[td].SCORE_NAME,tableData[td].SCORE_SCORE,dataJson[sc],sc);
	    	    	}
	    	    });
	    	}
	    })
	}
	
	/*
	 * 初始化表格
	 * tableId  表格id
	 * tableCode 项目名称
	 */
	var initTables = function(tableId,scoreName,scoreScore,dataJson,tableCode){
		var table;	
		if(scoreName && scoreScore){
	    	//显示标题信息
	    	var showTitle = '<span><h5>'+scoreName+'&nbsp;'+scoreScore+'&nbsp;分</h5></span>';
	    	$("#"+tabId+" #"+tableId).parent().prev().html(showTitle);
		}
    	var tableData = dataJson? dataJson:[];

    	//表格信息 	
		var paramsDataTables={
			searching: false, //此选项用来开启、关闭Datatables的搜索功能
			lengthChange: false, //是否允许最终用户改变表格每页显示的记录数
			paging: false,  //是否开启本地分页
			info:false,     //控制是否显示表格左下角的信息
			ordering:false, //是否允许Datatables开启排序
			autoWidth:true, //控制Datatables是否自适应宽度
			exportEnable:false,//是否可导出
			scrollY: "300px",//当表格高度超过300px的时候，显示垂直滚动条
			drawCallback:function( oSettings ) { //table加载完成后回调事件
		    	$(this).rowspan(0);//0是要合并列的下标
		    	$(this).rowspan(1);//1是要合并列的下标
	        }
		};
		var columns=[
               {
            	   "title":"项目类别",
            	   "data":"WEIGHT_NAME"
               },
               {
            	   "title":"项目类别分值",
            	   "data":"WEIGHT_SCORE"
               },
               {
            	   "title":"评分项",
            	   "data":"DETAIL_NAME",
            	   "render":function ( tdData, type, rowData, meta ) {
            		 //tdData:当前cell的值（基于 columns.data）      rowData:整个row的数据（不基于 columns.data）
            		   return '<a infoName="'+rowData.DETAIL_NAME+'" infoData="'+rowData.DETAIL_CODE+'" rIndex="'+meta.row+'" dvalue="'+rowData.VALID_FLAG+'" href="javascript:void(0)">'+tdData+'</a>';
            	   }
               },
               {
            	   "title":"分值",
            	   "data":"DETAIL_SCORE",	        
            	   "render":function ( tdData, type, rowData, meta ) {
       		    	//tdData:当前cell的值（基于 columns.data）      rowData:整个row的数据（不基于 columns.data）
       		    	//meta.row 行下标从0开始，meta.col 列下标从0开始
       		    	//如果是过滤或者排序则返回原始数据
       		    	if(type =='filter'||type =='sort'){
       		    		return tdData;
       		    	}
       		    	return formatNumber(tdData ,2);
       		    }
               },
               {
            	   "title":"是否质控",
            	   "data":"VALID_FLAG",
	   			   "render":function ( tdData, type, rowData, meta ) {
				    	//tdData:当前cell的值（基于 columns.data）      rowData:整个row的数据（不基于 columns.data）
				    	//meta.row 行下标从0开始，meta.col 列下标从0开始
				    	//如果是过滤或者排序则返回原始数据
				    	if(type =='filter'||type =='sort'){
				    		return tdData;
				    	}
				    	var tdDiv = '<div class="datagrid-cell" rowIndex="'+meta.row+'@@'+meta.col+'" tdValue="'+tdData+'"><input type="radio" ';
				    	if( parseInt(tdData) == 1 ){
				    		tdDiv +=' checked="checked" ';
				    	}
				    	tdDiv += ' value="1" name="'+tableCode+'_'+meta.row;
				    	tdDiv += '">是<input type="radio" ';
				    	if( parseInt(tdData) == 0 ){
				    		tdDiv +=' checked="checked" ';
				    	}
				    	tdDiv +=' value="0" name="'+tableCode+'_'+meta.row;
				    	tdDiv +='">否</div>';
				    	return tdDiv;
				    }
               },
               {
            	   "title":"保存",
            	   "data":"DETAIL_CODE",
	   			   "render": function ( tdData, type, rowData, meta ) {
				    	var tdOperate = '<button class="btn btn-xs" colIndex="'+meta.row+"@@"+meta.col+"@@"+tdData+'" disabled="true" >';
				    	tdOperate += '<i class="fa fa-check "></i></button>';
				    	return tdOperate;
				    }
               }
	     ];
		table = $("#"+tabId+" #"+tableId).dataTableBasic(columns, tableData,paramsDataTables);
		//给单选按钮列   是，否   添加点击监听事件
        $("#"+tabId+" #"+tableId+" tbody").on( 'click', 'input[type="radio"]', function () {
        	var radioValue = $(this).val(); //被点击的input的value值
        	var oldValue = $(this).parent().attr("tdValue");//默认值
        	var rowIndex = $(this).parent().attr("rowIndex");//被点击元素所在的行坐标和列坐标值
        	var rowInfos = rowIndex.split("@@");
        	//获取下一列的内容 （标题也算一行，所以行下标要加1）
        	var myNextColumn = $("#"+tabId+" #"+tableId).find("tr").eq(parseInt(rowInfos[0])+1).find("td").eq(parseInt(rowInfos[1])+1);
        	if( radioValue == oldValue ){//如果是默认值，则移除下一列的绿色样式并设为不可用
        		$(myNextColumn).children("button").removeClass("btn-success").attr("disabled",true) ;
        	}else{//如果不是默认值，则给下一列添加绿色样式并设为可用
        		$(myNextColumn).children("button").addClass("btn-success").removeAttr("disabled");
        	}
        } );
        //给保存按钮列添加点击监听事件
        $("#"+tabId+" #"+tableId+" tbody").on( 'click', 'button.btn', function () {
        	var colIndex = $(this).attr("colIndex");//被点击元素所在的行坐标和列坐标值
        	var indexInfos = colIndex.split("@@");
            //获取前一列的值（从0列开始计数，标题也算一行，所以行下标要加1）
            var divObj = $("#"+tabId+" #"+tableId).find("tr").eq(parseInt(indexInfos[0])+1).find("td").eq(parseInt(indexInfos[1])-1);
        	//input:checked 获取被选中的input值             input[checked="checked"]这个写法只能取到初始值，取不到动态修改以后的值
            var newValue = $(divObj).find('input:checked').val();
            var param = {code:indexInfos[2],field:"VALID_FLAG",value:newValue,table:table,rowIndex:parseInt(indexInfos[0])};
            saveModifyData(param);
        } );
        //给超链接添加点击事件
        $("#"+tabId+" #"+tableId+" tbody").on( 'click', '[href="javascript:void(0)"]', function () {
        	var detailName = $(this).attr("infoName");
        	var detailCode = $(this).attr("infoData");
        	var detailvalue = $(this).attr("dvalue");
        	var rIndex = $(this).attr("rIndex");
        	var param = {detailName:detailName,detailCode:detailCode,field:"VALID_FLAG",detailvalue:detailvalue,table:table,rowIndex:parseInt(rIndex)};
        	findRules(param);
        	return false;
        } );	        
		///////////////////////
	}
	
	initPage("qualityDictDetailContainer");
	
});

